﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;
namespace GUI
{
    public partial class FrmKhuyenMai : Form
    {
        public FrmKhuyenMai()
        {
            InitializeComponent();
        }
        KhuyenMaiDTO kmdto = new KhuyenMaiDTO();
        KhuyenMaiBUS kmbus = new KhuyenMaiBUS();
        MonAnBUS mabus = new MonAnBUS();
        List<KhuyenMaiDTO> dskm = new List<KhuyenMaiDTO>();
        private void DaTaGridview()
        {
            dskm = kmbus.LayDanhSachKhuyenMai();
            gridviewKM.Rows.Clear();
            for (int i = 0; i < dskm.Count; i++)
                gridviewKM.Rows.Add(null, dskm[i].MACTKM, mabus.TenMonAn(dskm[i].MaMonAn), dskm[i].TuNgay.ToString("dd-MM-yyyy H:mm:ss"), dskm[i].DenNgay.ToString("dd-MM-yyyy H:mm:ss"), dskm[i].PhanTramKhuyenMai);
        }
        private void reset()
        {
            foreach (DataGridViewRow r in gridviewKM.Rows)
            {
                if (r.Cells[0].Value != null)
                {
                    r.Cells[0].Value = null;
                }
            }
            cbbTenMonAn.SelectedItem = null;
            txtNamDen.Text = "";
            txtNgayDen.Text = "";
            txtNamTu.Text = "";
            txtNgayTu.Text = "";
            cbbThangDen.SelectedItem = null;
            cbbThangTu.SelectedItem = null;
            txtPhanTramKhuyenMai.Text = "";
        }
        private void btnThoat_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (cbbTenMonAn.SelectedItem == null)
            {
                MessageBox.Show("Chưa Chọn Tên Món Ăn!");
                return;
            }
            if (cbbThangTu.SelectedItem == null)
            {
                MessageBox.Show("Chưa Chọn Tháng Từ!");
                return;
            }
            if (cbbThangDen.SelectedItem == null)
            {
                MessageBox.Show("Chưa Chọn Tháng Đến!");
                return;
            }
            if (txtNgayTu.Text == "" || int.Parse(txtNgayTu.Text) < 1)
            {
                MessageBox.Show("Chưa Nhập Ngày Từ Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (txtNamTu.Text == "" || int.Parse(txtNamTu.Text) < 1800 || int.Parse(txtNamTu.Text) > 9999)
            {
                MessageBox.Show("Chưa Nhập Năm Từ Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (txtNgayDen.Text == "" || int.Parse(txtNgayDen.Text) < 1)
            {
                MessageBox.Show("Chưa Nhập Ngày Đến Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (txtNamDen.Text == "" || int.Parse(txtNamDen.Text) < 1800 || int.Parse(txtNamDen.Text) > 9999)
            {
                MessageBox.Show("Chưa Nhập Năm Đến Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (!(kmbus.kiemtra(int.Parse(txtNgayTu.Text), Convert.ToInt32(cbbThangTu.SelectedItem.ToString()), int.Parse(txtNamTu.Text))))
            {
                MessageBox.Show("Ngày Tháng Năm Từ Không Hợp Lệ!");
                return;
            }
            if (!(kmbus.kiemtra(int.Parse(txtNgayDen.Text), Convert.ToInt32(cbbThangDen.SelectedItem.ToString()), int.Parse(txtNamDen.Text))))
            {
                MessageBox.Show("Ngày Tháng Năm Đến Không Hợp Lệ!");
                return;
            }
            if (int.Parse(txtNamDen.Text) < int.Parse(txtNamTu.Text))
            {
                MessageBox.Show("Ngày Tháng Năm Đến Phải Lớn Hơn Ngày Tháng Năm Từ!");
                return;
            }
            else if (int.Parse(txtNamDen.Text) == int.Parse(txtNamTu.Text))
            {
                if (Convert.ToInt32(cbbThangTu.SelectedItem.ToString()) > Convert.ToInt32(cbbThangDen.SelectedItem.ToString()))
                {
                    MessageBox.Show("Ngày Tháng Năm Đến Phải Lớn Hơn Ngày Tháng Năm Từ!");
                    return;
                }
                else if (Convert.ToInt32(cbbThangDen.SelectedItem.ToString()) == Convert.ToInt32(cbbThangTu.SelectedItem.ToString()))
                {
                    if (int.Parse(txtNgayTu.Text) > int.Parse(txtNgayDen.Text))
                    {
                        MessageBox.Show("Ngày Tháng Năm Đến Phải Lớn Hơn Ngày Tháng Năm Từ!");
                        return;
                    }
                }
            }
            MonAnDTO madto = (MonAnDTO)cbbTenMonAn.SelectedItem;
            kmdto.MaMonAn = madto.MaMonAn;
            kmdto.TuNgay = new DateTime(int.Parse(txtNamTu.Text), Convert.ToInt32(cbbThangTu.SelectedItem.ToString()), int.Parse(txtNgayTu.Text), 0, 0, 0);
            kmdto.DenNgay = new DateTime(int.Parse(txtNamDen.Text), Convert.ToInt32(cbbThangDen.SelectedItem.ToString()), int.Parse(txtNgayDen.Text), 23, 59, 59);
            if (txtPhanTramKhuyenMai.Text == "")
            {
                MessageBox.Show("Chưa Nhập Phần Trăm Khuyến Mãi!");
                return;
            }
            kmdto.PhanTramKhuyenMai = int.Parse(txtPhanTramKhuyenMai.Text);
            if (kmbus.ThemKhuyenMai(kmdto) == 1)
            {
                DaTaGridview();
                reset();
                return;
            }
            else
            {
                MessageBox.Show("Thêm Khuyến Mãi Thất Bại!");
                return;
            }
        }

        private void FrmKhuyenMai_Load(object sender, EventArgs e)
        {
            cbbTenMonAn.DataSource = mabus.LayDanhSachMonAn();
            cbbTenMonAn.DisplayMember = "TenMon";
            cbbTenMonAn.ValueMember = "MaMonAn";
            DaTaGridview();
            reset();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            int flag = 0;
            foreach (DataGridViewRow row in gridviewKM.Rows)
            {
                if (row.Cells[0].Value != null && (Boolean)row.Cells[0].Value == true)
                {
                    flag = 1;
                    int idToDelete = int.Parse(row.Cells[1].Value.ToString());
                    kmbus.XoaKhuyenMai(idToDelete);
                }
            }
            if (flag == 0)
            {
                MessageBox.Show("Chưa Chọn Để Xóa!");
                return;
            }
            DaTaGridview();
            reset();
            return;
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            int dem = 0;
            foreach (DataGridViewRow r in gridviewKM.Rows)
            {
                if (r.Cells[0].Value != null && (Boolean)r.Cells[0].Value == true)
                {
                    dem++;
                    kmdto.MACTKM = int.Parse(r.Cells[1].Value.ToString());
                }
            }
            if (dem != 1)
            {
                MessageBox.Show("Hãy Kiểm Tra Lại!\nCó Thể Bạn Chưa Chọn Hoặc Chọn Hơn 1 !");
                return;
            }
            if (cbbTenMonAn.SelectedItem == null)
            {
                MessageBox.Show("Chưa Chọn Tên Món Ăn!");
                return;
            }
            if (cbbThangTu.SelectedItem == null)
            {
                MessageBox.Show("Chưa Chọn Tháng Từ!");
                return;
            }
            if (cbbThangDen.SelectedItem == null)
            {
                MessageBox.Show("Chưa Chọn Tháng Đến!");
                return;
            }
            if (txtNgayTu.Text == "" || int.Parse(txtNgayTu.Text) < 1)
            {
                MessageBox.Show("Chưa Nhập Ngày Từ Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (txtNamTu.Text == "" || int.Parse(txtNamTu.Text) < 1800 || int.Parse(txtNamTu.Text) > 9999)
            {
                MessageBox.Show("Chưa Nhập Năm Từ Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (txtNgayDen.Text == "" || int.Parse(txtNgayDen.Text) < 1)
            {
                MessageBox.Show("Chưa Nhập Ngày Đến Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (txtNamDen.Text == "" || int.Parse(txtNamDen.Text) < 1800 || int.Parse(txtNamDen.Text) > 9999)
            {
                MessageBox.Show("Chưa Nhập Năm Đến Hoặc Nhập Không Hợp Lệ!");
                return;
            }
            if (!(kmbus.kiemtra(int.Parse(txtNgayTu.Text), Convert.ToInt32(cbbThangTu.SelectedItem.ToString()), int.Parse(txtNamTu.Text))))
            {
                MessageBox.Show("Ngày Tháng Năm Từ Không Hợp Lệ!");
                return;
            }
            if (!(kmbus.kiemtra(int.Parse(txtNgayDen.Text), Convert.ToInt32(cbbThangDen.SelectedItem.ToString()), int.Parse(txtNamDen.Text))))
            {
                MessageBox.Show("Ngày Tháng Năm Đến Không Hợp Lệ!");
                return;
            }
            if (int.Parse(txtNamDen.Text) < int.Parse(txtNamTu.Text))
            {
                MessageBox.Show("Ngày Tháng Năm Đến Phải Lớn Hơn Ngày Tháng Năm Từ!");
                return;
            }
            else if (int.Parse(txtNamDen.Text) == int.Parse(txtNamTu.Text))
            {
                if (Convert.ToInt32(cbbThangTu.SelectedItem.ToString()) > Convert.ToInt32(cbbThangDen.SelectedItem.ToString()))
                {
                    MessageBox.Show("Ngày Tháng Năm Đến Phải Lớn Hơn Ngày Tháng Năm Từ!");
                    return;
                }
                else if (Convert.ToInt32(cbbThangDen.SelectedItem.ToString()) == Convert.ToInt32(cbbThangTu.SelectedItem.ToString()))
                {
                    if (int.Parse(txtNgayTu.Text) > int.Parse(txtNgayDen.Text))
                    {
                        MessageBox.Show("Ngày Tháng Năm Đến Phải Lớn Hơn Ngày Tháng Năm Từ!");
                        return;
                    }
                }
            }
            MonAnDTO madto = (MonAnDTO)cbbTenMonAn.SelectedItem;
            kmdto.MaMonAn = madto.MaMonAn;

            kmdto.TuNgay = new DateTime(int.Parse(txtNamTu.Text), Convert.ToInt32(cbbThangTu.SelectedItem.ToString()), int.Parse(txtNgayTu.Text), 0, 0, 0);
            kmdto.DenNgay = new DateTime(int.Parse(txtNamDen.Text), Convert.ToInt32(cbbThangDen.SelectedItem.ToString()), int.Parse(txtNgayDen.Text), 23, 59, 59);

            if (txtPhanTramKhuyenMai.Text == "")
            {
                MessageBox.Show("Chưa Nhập Phần Trăm Khuyến Mãi!");
                return;
            }
            kmdto.PhanTramKhuyenMai = int.Parse(txtPhanTramKhuyenMai.Text);
            if (kmbus.CapNhatKhuyenMai(kmdto) == 1)
            {
                DaTaGridview();
                reset();
                return;
            }
            else
            {
                MessageBox.Show("Cập Nhật Thất Bại!");
                return;
            }
        }

        private void gridviewKM_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                DataGridViewRow row = this.gridviewKM.Rows[e.RowIndex];

                List<KhuyenMaiDTO> ds = kmbus.LayDanhSachKhuyenMai(Convert.ToInt32(row.Cells[1].Value.ToString()));
                cbbTenMonAn.SelectedValue = ds[0].MaMonAn;
                DateTime tam1 = DateTime.ParseExact(row.Cells[3].Value.ToString(), "dd-MM-yyyy H:mm:ss", null);
                txtNamTu.Text = tam1.Year.ToString();
                txtNgayTu.Text = tam1.Day.ToString();
                cbbThangTu.SelectedItem = tam1.Month.ToString();

                tam1 = DateTime.ParseExact(row.Cells[4].Value.ToString(), "dd-MM-yyyy H:mm:ss", null);
                txtNamDen.Text = tam1.Year.ToString();
                txtNgayDen.Text = tam1.Day.ToString();
                cbbThangDen.SelectedItem = tam1.Month.ToString();

                txtPhanTramKhuyenMai.Text = row.Cells[5].Value.ToString();
            }
        }

        private void FrmKhuyenMai_FormClosed(object sender, FormClosedEventArgs e)
        {
            Program.frm_manhinhchinh.sub_mn_qlkhuyenmai.Checked = false;
        }
    }
}
